package 简单.两数之和;


import org.junit.Test;

import java.util.Arrays;

/**
 * @author liudingding
 * @ClassName Solution
 * @description
 * 给定一个整数数组 nums 和一个整数目标值 target，请你在该数组中找出和为目标的那两个整数，并返回它们的数组下标。
 * 1、输入：nums = [2,7,11,15], target = 9
 * 输出：[0,1]
 * 解释：因为 nums[0] + nums[1] == 9 ，返回 [0, 1] 。
 * 2、输入：nums = [3,2,4], target = 6
 * 输出：[1,2]
 *
 * 解题思路：
 * 1、暴力法，一层层遍历
 * 2、遍历数组 nums，i 为当前下标，每个值都判断map中是否存在 target-nums[i] 的 key 值
 * 如果存在则找到了两个值，如果不存在则将当前的 (nums[i],i) 存入 map 中，继续遍历直到找到为止
 * 如果最终都没有结果则抛出异常
 * @date 2021/2/8 9:35 上午
 */
public class Solution {
    public int[] twoSum(int[] nums, int target) {
        if (nums.length < 1) {
            return null;
        }
        for (int i=0; i<nums.length; i++){
            for (int j=i+1; j<nums.length; j++){
                if (nums[i] + nums[j] == target){
                    return new int[]{i,j};
                }
            }
        }
        return new int[]{};
    }

    @Test
    public void test(){
        int[] nums = {2,7,11,15};
        int[] ints = twoSum(nums, 9);
        Arrays.stream(ints).forEach(System.out::println);
    }
}


